type T3 = 1 | boolean extends boolean | infer R ? R : never;
//   ^?

// 函数在定义时 对T进行计算
declare function P<T extends 1 | boolean>(): T extends number | infer B
  ? B
  : never;
const p = P();
//    ^?

// 类方法
declare class B<in U> {
  get b(): U extends number | infer V ? V : never;
}

const { b } = new B<boolean | 1>();
//      ^?
